export default {
  // 开启命名空间 -- 会自动以文件名作为名字
  namespaced: true,
  // 子模块里的state必须是一个函数，函数里return一个对象
  state () {
    return {
      // 声明数据
      cartList: [{ id: 1, name: '测试数据', price: 1 }]
    }
  },
  getters: {
    // 当某个数据依赖多个数据计算得来，就可以用计算属性
    // 固定参数：state，得到的就是当前的state
    totalPrice (state) {
      return state.cartList.reduce((sum, v) => (sum += v.price), 0)
    }
  },
  mutations: {
    setCartList (state, list) {
      state.cartList = list
    },
    fn () {
      console.log('cart里的fn')
    }
  },
  actions: {
    // 参数1：固定的context，也可以简写为ctx，代表了当前store对象
    // 跟mutations一样，也只能接收1个额外参数
    reqCartList (ctx) {
      setTimeout(() => {
        // 得到一个服务器返回的数组
        const list = [
          { id: 1, name: '皮鞋', price: 9.9 },
          { id: 2, name: '凉鞋', price: 7699 },
          { id: 3, name: '外套', price: 2399 },
          { id: 4, name: '斜挎包', price: 17900 }
        ]

        // 调用muations的方法进行保存
        ctx.commit('setCartList', list)
      }, 1000)
    }
  }
}
